home *** CD-ROM | disk | FTP | other *** search
/ Acorn RISC PD-CD 1 / Acorn RISC PD-CD 1.iso / sillies / _docs / realprog < prev    next >
Text File  |  1992-05-04  |  25KB  |  535 lines

  1.              Real Programmers Don't Use PASCAL
  2.  
  3.  
  4.      Back in the good old days -- the "Golden Era"  of  com-
  5. puters, it was easy to separate the men from the boys (some-
  6. times called "Real Men" and "Quiche Eaters" in  the  litera-
  7. ture).  During  this period, the Real Men were the ones that
  8. understood computer programming, and the Quiche Eaters  were
  9. the ones that didn't. A real computer programmer said things
  10. like DO 10 I=1,10 and ABEND (they actually talked in capital
  11. letters,  you  understand),  and  the rest of the world said
  12. things like "computers are too complicated for  me"  and  "I
  13. can't relate to computers -- they're so impersonal". (A pre-
  14. vious work [1] points out that Real Men  don't  "relate"  to
  15. anything, and aren't afraid of being impersonal.)
  16.  
  17.      But, as usual, times change. We are faced today with  a
  18. world  in which little old ladies can get computers in their
  19. microwave ovens, 12-year-old kids can blow Real Men  out  of
  20. the  water playing Asteroids and Pac-Man, and anyone can buy
  21. and even understand their very own  Personal  Computer.  The
  22. Real  Programmer  is in danger of becoming extinct, of being
  23. replaced by high-school students with TRASH-80's.
  24.  
  25.      There is a clear need  to  point  out  the  differences
  26. between  the typical high-school junior Pac-Man player and a
  27. Real Programmer. If this difference is made clear,  it  will
  28. give  these  kids  something to aspire to -- a role model, a
  29. Father Figure. It will also help explain to the employers of
  30. Real  Programmers  why  it would be a mistake to replace the
  31. Real Programmers on their  staff  with  12-year-old  Pac-Man
  32. players (at a considerable salary savings).
  33.  
  34.      The easiest way to tell  a  Real  Programmer  from  the
  35. crowd  is by the programming language he (or she) uses. Real
  36. Programmers use FORTRAN.  Quiche Eaters use PASCAL. Nicklaus
  37. Wirth,  the designer of PASCAL, gave a talk once at which he
  38. was asked "How do you pronounce  your  name?".  He  replied,
  39. "You  can either call me by name, pronouncing it 'Veert', or
  40. call me by value, 'Worth'." One can  tell  immediately  from
  41. this comment that Nicklaus Wirth is a Quiche Eater. The only
  42. parameter passing mechanism endorsed by Real Programmers  is
  43. call-by-value-return, as implemented in the IBM370 FORTRAN-G
  44. and H compilers.  Real  programmers  don't  need  all  these
  45. abstract  concepts  to  get their jobs done -- they are per-
  46. fectly happy with a keypunch, a FORTRAN IV compiler,  and  a
  47. beer.
  48.  
  49.   +    Real  Programmers  do  List  Processing  in  FORTRAN.
  50.  
  51.   +    Real Programmers do  String  Manipulation in FORTRAN.
  52.  
  53.   +    Real Programmers do Accounting     (if they do it  at 
  54.        all) in FORTRAN.
  55.  
  56.   +    Real Programmers do Artificial  Intelligence programs
  57.        in FORTRAN.
  58.  
  59. If you can't do it in FORTRAN, do it in  assembly  language.
  60. If  you  can't  do  it  in assembly language, it isn't worth
  61. doing.
  62.  
  63. STRUCTURED PROGRAMMING
  64. ======================
  65.  
  66.      The academics in computer science have gotten into  the
  67. "structured  programming"  rut  over the past several years.
  68. They claim that programs are more easily understood  if  the
  69. programmer  uses  some special language constructs and tech-
  70. niques. They don't all agree on exactly which constructs, of
  71. course,  and  the examples they use to show their particular
  72. point of view invariably  fit  on  a  single  page  of  some
  73. obscure journal or another -- clearly not enough of an exam-
  74. ple to convince anyone. When I got out of school, I  thought
  75. I  was  the  best  programmer in the world. I could write an
  76. unbeatable tic-tac-toe program, use five different  computer
  77. languages,   and  create  1000-line  programs  that  WORKED.
  78. (Really!) Then I got out into the Real World.  My first task
  79. in  the Real World was to read and understand a 200,000-line
  80. FORTRAN program, then speed it up by a factor  of  two.  Any
  81. Real Programmer will tell you that all the Structured Coding
  82. in the world won't help you solve a problem like that --  it
  83. takes  actual  talent.  Some quick observations on Real Pro-
  84. grammers and Structured Programming:
  85.  
  86.   +    Real Programmers aren't afraid to use GOTO's.
  87.  
  88.   +    Real Programmers  can  write  five-page-long DO loops
  89.        without getting confused.
  90.  
  91.   +    Real Programmers like Arithmetic IF statements - they
  92.        make the code more interesting.
  93.  
  94.   +    Real   Programmers   write   self - modifying   code,
  95.        especially  if they  can  save  20 nanoseconds in the
  96.        middle of a tight loop.
  97.  
  98.   +    Real Programmers don't need comments -- the  code  is
  99.        obvious.
  100.  
  101.   +    Since FORTRAN doesn't  have a  structured  IF, REPEAT
  102.        ... UNTIL,  or  CASE   statement,  Real   Programmers
  103.        don't  have to  worry about not using them.  Besides,
  104.        they can be simulated  when necessary using  assigned 
  105.        GOTO's.
  106.  
  107.      Data Structures have also gotten a lot of press lately.
  108. Abstract   Data  Types,  Structures,  Pointers,  Lists,  and
  109. Strings have become popular in certain circles.  Wirth  (the
  110. above-mentioned  Quiche Eater) actually wrote an entire book
  111. [2] contending that you could write a program based on  data
  112. structures,  instead  of  the  other way around. As all Real
  113. Programmers know, the only  useful  data  structure  is  the
  114. Array.  Strings,  lists,  structures,  sets -- these are all
  115. special cases of arrays and can be treated that way just  as
  116. easily  without messing up your programing language with all
  117. sorts of complications. The worst  thing  about  fancy  data
  118. types is that you have to declare them, and Real Programming
  119. Languages, as we all know, have implicit typing based on the
  120. first letter of the (six character) variable name.
  121.  
  122. OPERATING SYSTEMS
  123. =================
  124.  
  125.      What kind of operating system is used by  a  Real  Pro-
  126. grammer?   CPM? God forbid -- CPM, after all, is basically a
  127. toy operating system.  Even  little  old  ladies  and  grade
  128. school students can understand and use CPM.
  129.  
  130.      Unix is a lot more complicated of course -- the typical
  131. Unix  hacker  never  can  remember what the PRINT command is
  132. called this week -- but when it gets right down to it,  Unix
  133. is  a glorified video game.  People don't do Serious Work on
  134. Unix systems: they send jokes around the world  on  UUCP-net
  135. and write adventure games and research papers.
  136.  
  137.      No, your Real Programmer uses OS370. A good  programmer
  138. can find and understand the description of the IJK305I error
  139. he just got in his JCL manual. A great programmer can  write
  140. JCL  without  referring  to  the manual at all. A truly out-
  141. standing programmer can find bugs buried  in  a  6  megabyte
  142. core  dump  without using a hex calculator. (I have actually
  143. seen this done.)
  144.  
  145.      OS is a truly remarkable operating system. It's  possi-
  146. ble  to  destroy days of work with a single misplaced space,
  147. so alertness in the programming  staff  is  encouraged.  The
  148. best way to approach the system is through a keypunch.  Some
  149. people claim there is a Time Sharing  system  that  runs  on
  150. OS370, but after careful study I have come to the conclusion
  151. that they were mistaken.
  152.  
  153.  
  154. PROGRAMMING TOOLS
  155. =================
  156.  
  157.      What kind of tools  does  a  Real  Programmer  use?  In
  158. theory,  a  Real Programmer could run his programs by keying
  159. them into the front panel of the computer.  Back in the days
  160. when  computers  had  front  panels,  this was actually done
  161. occasionally. Your typical Real Programmer knew  the  entire
  162. bootstrap  loader  by memory in hex, and toggled it in when-
  163. ever it got destroyed by his program. (Back then, memory was
  164. memory  -- it didn't go away when the power went off. Today,
  165. memory either forgets things when you don't want it  to,  or
  166. remembers  things  long  after  they're  better  forgotten.)
  167. Legend has it that Seymour Cray,  inventor  of  the  Cray  I
  168. supercomputer and most of Control Data's computers, actually
  169. toggled the first operating system for the CDC7600 in on the
  170. front  panel from memory when it was first powered on.  Sey-
  171. mour, needless to say, is a Real Programmer.
  172.  
  173.      One of my favorite Real Programmers was a systems  pro-
  174. grammer  for  Texas  Instruments. One day he got a long dis-
  175. tance call from a user whose system had crashed in the  mid-
  176. dle  of  saving  some important work. Jim was able to repair
  177. the damage over the phone, getting the  user  to  toggle  in
  178. disk  IO  instructions  at the front panel, repairing system
  179. tables in hex,  reading  register  contents  back  over  the
  180. phone. The moral of this story: while a Real Programmer usu-
  181. ally includes a keypunch and lineprinter in his toolkit,  he
  182. can  get  along  with  just a front panel and a telephone in
  183. emergencies.
  184.  
  185.      In some companies, text editing no longer  consists  of
  186. ten  engineers  standing  in line to use an 029 keypunch. In
  187. fact, the building  I  work  in  doesn't  contain  a  single
  188. keypunch.  The  Real  Programmer in this situation has to do
  189. his work with a "text editor" program. Most  systems  supply
  190. several text editors to select from, and the Real Programmer
  191. must be careful to  pick  one  that  reflects  his  personal
  192. style. Many people believe that the best text editors in the
  193. world were written at Xerox Palo Alto  Research  Center  for
  194. use  on  their Alto and Dorado computers [3]. Unfortunately,
  195. no Real Programmer would ever use a computer whose operating
  196. system  is called SmallTalk, and would certainly not talk to
  197. the computer with a mouse.
  198.  
  199.      Some of the concepts in these Xerox editors  have  been
  200. incorporated  into  editors running on more reasonably named
  201. operating systems -- EMACS and VI  being  two.  The  problem
  202. with  these  editors is that Real Programmers consider "what
  203. you see is what you get" to be just as bad a concept in Text
  204. Editors  as  it is in women. No, the Real Programmer wants a
  205. "you asked for it, you got it" text editor  --  complicated,
  206. cryptic,  powerful, unforgiving, dangerous. TECO, to be pre-
  207. cise.
  208.  
  209.      It has been observed that a TECO command sequence  more
  210. closely resembles transmission line noise than readable text
  211. [4]. One of the more entertaining games to play with TECO is
  212. to type your name in as a command line and try to guess what
  213. it does. Just about any possible typing error while  talking
  214. with  TECO will probably destroy your program, or even worse
  215. -- introduce subtle and mysterious bugs in  a  once  working
  216. subroutine.
  217.  
  218.      For this reason,  Real  Programmers  are  reluctant  to
  219. actually  edit a program that is close to working. They find
  220. it  much  easier  to  just  patch  the  binary  object  code
  221. directly,  using a wonderful program called SUPERZAP (or its
  222. equivalent on non-IBM machines). This  works  so  well  that
  223. many working programs on IBM systems bear no relation to the
  224. original FORTRAN code. In many cases,  the  original  source
  225. code  is  no  longer  available. When it comes time to fix a
  226. program like this, no manager would even  think  of  sending
  227. anything  less  than  a  Real Programmer to do the job -- no
  228. Quiche Eating structured programmer would even know where to
  229. start. This is called "job security".
  230.  
  231. Some programming tools NOT used by Real Programmers:
  232.  
  233.   +    FORTRAN  preprocessors like  MORTRAN and  RATFOR. The
  234.        Cuisinarts   of   programming  --  great  for  making
  235.        Quiche. See comments above on structured programming.
  236.  
  237.  
  238.   +    Source language debuggers. Real  Programmers can read
  239.        core dumps.
  240.  
  241.   +    Compilers  with  array  bounds checking.  They stifle
  242.        creativity,  destroy most of the interesting uses for
  243.        EQUIVALENCE,  and  make  it  impossible to modify the 
  244.        operating system code with negative subscripts. Worst
  245.        of all, bounds checking is inefficient.
  246.  
  247.   +    Source code  maintenance  systems.  A Real Programmer
  248.        keeps his code  locked up  in a card file, because it
  249.        implies that its owner cannot leave   his   important
  250.        programs unguarded [5].
  251.  
  252. THE REAL PROGRAMMER AT WORK
  253. ===========================
  254.  
  255.      Where does the typical Real Programmer work? What  kind
  256. of  programs  are  worthy  of  the efforts of so talented an
  257. individual? You can be sure that no Real Programmer would be
  258. caught  dead  writing accounts-receivable programs in COBOL,
  259. or sorting mailing lists for People magazine.  A  Real  Pro-
  260. grammer    wants    tasks    of   earth-shaking   importance
  261. (literally!).
  262.  
  263.   +    Real  Programmers  work  for   Los  Alamos   National 
  264.        Laboratory,  writing atomic bomb  simulations to  run
  265.        on Cray I supercomputers.
  266.  
  267.   +    Real  Programmers  work  for  the  National  Security
  268.        Agency,  decoding Russian transmissions.
  269.  
  270.   +    It  was  largely  due  to the efforts of thousands of
  271.        Real Programmers  working for NASA  that our boys got
  272.        to the moon and back before the Russkies.
  273.  
  274.   +    Real Programmers are at work for Boeing designing the
  275.        operating systems for cruise missiles.
  276.  
  277.  
  278.      Some of the most awesome Real Programmers of  all  work
  279. at the Jet Propulsion Laboratory in California. Many of them
  280. know the entire operating system of the Pioneer and  Voyager
  281. spacecraft  by  heart.  With  a combination of large ground-
  282. based FORTRAN programs and small  spacecraft-based  assembly
  283. language  programs,  they are able to do incredible feats of
  284. navigation and improvisation -- hitting  ten-kilometer  wide
  285. windows  at  Saturn  after  six years in space, repairing or
  286. bypassing damaged sensor platforms, radios,  and  batteries.
  287. Allegedly,  one  Real  Programmer managed to tuck a pattern-
  288. matching program into a few hundred bytes of  unused  memory
  289. in a Voyager spacecraft that searched for, located, and pho-
  290. tographed a new moon of Jupiter.
  291.  
  292.      The current plan for the Galileo spacecraft is to use a
  293. gravity  assist  trajectory past Mars on the way to Jupiter.
  294. This  trajectory  passes  within  80 +- 3 kilometers of  the 
  295. surface  of Mars. Nobody is going to trust a  PASCAL program
  296. (or a PASCAL programmer) for navigation to these tolerances.
  297.  
  298.      As you can tell, many of the world's  Real  Programmers
  299. work  for the U.S.  Government -- mainly the Defense Depart-
  300. ment. This is as it should be.  Recently, however,  a  black
  301. cloud  has  formed on the Real Programmer horizon.  It seems
  302. that some highly placed Quiche Eaters at the Defense Depart-
  303. ment  decided that all Defense programs should be written in
  304. some grand unified language called ADA  ((C),  DoD).  For  a
  305. while,  it seemed that ADA was destined to become a language
  306. that went against all the precepts of Real Programming --  a
  307. language  with structure, a language with data types, strong
  308. typing, and semicolons.  In short, a  language  designed  to
  309. cripple  the  creativity  of  the  typical  Real Programmer.
  310.  
  311. Fortunately,  the  language  adopted  by  DoD   has   enough
  312. interesting features to make it approachable -- it's incred-
  313. ibly complex, includes methods for messing with the  operat-
  314. ing  system  and  rearranging  memory,  and  Edsger Dijkstra
  315. doesn't like it [6].  (Dijkstra, as I'm sure you  know,  was
  316. the  author of "GoTos Considered Harmful" -- a landmark work
  317. in programming methodology, applauded by PASCAL  programmers
  318. and  Quiche Eaters alike.) Besides, the determined Real Pro-
  319. grammer can write FORTRAN programs in any language.
  320.  
  321.      The Real Programmer might compromise his principles and
  322. work on something slightly more trivial than the destruction
  323. of life as we know it, providing there's enough money in it.
  324. There  are  several Real Programmers building video games at
  325. Atari, for example. (But not playing them -- a Real Program-
  326. mer  knows  how to beat the machine every time: no challenge
  327. in that.) Everyone working at LucasFilm is a  Real  Program-
  328. mer. (It would be crazy to turn down the money of fifty mil-
  329. lion Star Trek fans.) The proportion of Real Programmers  in
  330. Computer  Graphics  is  somewhat lower than the norm, mostly
  331. because nobody has found a use for computer graphics yet. On
  332. the other hand, all computer graphics is done in FORTRAN, so
  333. there are a fair number of people doing graphics in order to
  334. avoid having to write COBOL programs.
  335.  
  336. THE REAL PROGRAMMER AT PLAY
  337. ===========================
  338.  
  339.      Generally, the Real Programmer plays the  same  way  he
  340. works  --  with  computers. He is constantly amazed that his
  341. employer actually pays him to do what he would be doing  for
  342. fun anyway (although he is careful not to express this opin-
  343. ion out loud). Occasionally, the Real Programmer  does  step
  344. out  of  the  office for a breath of fresh air and a beer or
  345. two. Some tips on recognizing Real Programmers away from the
  346. computer room:
  347.  
  348.   +    At a party, the Real Programmers are the ones in  the
  349.        corner  talking  about  operating system security and
  350.        how to get around it.
  351.  
  352.   +    At a football game, the  Real  Programmer  is the one 
  353.        comparing the plays against his  simulations  printed 
  354.        on  11 by 14 fanfold paper.
  355.  
  356.   +    At the beach,  the Real Programmer is the one drawing
  357.        flowcharts in the sand.
  358.  
  359.   +    At a funeral, the Real Programmer is the  one  saying
  360.        "Poor George.  And he  almost had  the  sort  routine
  361.        working before the coronary."
  362.  
  363.   +    In a  grocery store,  the  Real Programmer is the one
  364.        who  insists on  running  the  cans  past  the  laser 
  365.        checkout  scanner  himself,  because  he  never could 
  366.        trust  keypunch operators  to get it right  the first
  367.        time.
  368.  
  369.  
  370. THE REAL PROGRAMMER'S NATURAL HABITAT
  371. =====================================
  372.  
  373.      What sort of environment does the Real Programmer func-
  374. tion best in? This is an important question for the managers
  375. of Real Programmers. Considering  the  amount  of  money  it
  376. costs  to  keep  one  on the staff, it's best to put him (or
  377. her) in an environment where he can get his work done.
  378.  
  379.      The typical Real Programmer lives in front  of  a  com-
  380. puter  terminal.  Surrounding this terminal are: Listings of
  381. all programs the Real Programmer has ever worked on,   piled
  382. in roughly chronological order on every flat surface  in the
  383. office.
  384.  
  385.   +    Some half-dozen or so  partly  filled  cups  of  cold  
  386.        coffee. Occasionally,  there will be  cigarette butts
  387.        floating in the coffee.  In some cases, the cups will
  388.        contain Orange Crush.
  389.  
  390.   +   Unless  he is very  good,  there will be copies of the 
  391.       OS JCL manual  and the Principles of Operation open to
  392.       some particularly interesting pages.
  393.  
  394.   +  Taped to the wall is a line-printer Snoopy calendar for
  395.      the year 1969.
  396.  
  397.   +  Strewn about the floor are several wrappers for  peanut
  398.      butter  filled  cheese bars --  the  type that are made
  399.      pre-stale at the  bakery  so they  can't get  any worse
  400.      while waiting in the vending machine.
  401.  
  402.   +  Hiding in the top left-hand drawer of  the  desk  is  a
  403.      stash of double-stuff Oreos for special occasions.
  404.  
  405.   +  Underneath the Oreos is a flowcharting  template,  left
  406.      there by the  previous occupant  of the  office.  (Real  
  407.      Programmers  write programs,  not documentation.  Leave 
  408.      that to the maintenance people.)
  409.  
  410.  
  411.      The Real Programmer is capable of working 30, 40,  even
  412. 50  hours  at a stretch, under intense pressure. In fact, he
  413. prefers it that way.  Bad response time doesn't  bother  the
  414. Real  Programmer  -- it gives him a chance to catch a little
  415. sleep between compiles. If  there  is  not  enough  schedule
  416. pressure  on  the  Real  Programmer, he tends to make things
  417. more challenging by working on some  small  but  interesting
  418. part of the problem for the first nine weeks, then finishing
  419. the  rest  in  the  last  week,  in  two  or  three  50-hour
  420. marathons.  This  not  only  impresses  the  hell out of his
  421. manager, who was despairing of ever getting the project done
  422. on  time,  but creates a convenient excuse for not doing the
  423. documentation. In general: No Real Programmer works 9  to  5
  424. (unless it's the ones at
  425.       night).
  426.  
  427.   +    Real Programmers don't wear neckties.
  428.  
  429.   +    Real Programmers don't wear high-heeled shoes.
  430.  
  431.   +    Real Programmers arrive at work in time for lunch [9]
  432.  
  433.   +    A Real Programmer might or might not know his  wife's
  434.        name.  He does,  however,  know the entire ASCII  (or
  435.        EBCDIC) code table.
  436.  
  437.   +    Real  Programmers  don't  know how  to cook.  Grocery
  438.        stores  aren't  open at  three in the  morning.  Real
  439.        Programmers survive on Twinkies and coffee.
  440.  
  441.  
  442. THE FUTURE
  443. ==========
  444.  
  445.      What of the future? It is a matter of some  concern  to
  446. Real Programmers that the latest generation of computer pro-
  447. grammers are not being brought up with the same  outlook  on
  448. life  as  their  elders. Many of them have never seen a com-
  449. puter with a front  panel.  Hardly  anyone  graduating  from
  450. school  these  days can do hex arithmetic without a calcula-
  451. tor. College graduates these days are soft -- protected from
  452. the realities of programming by source level debuggers, text
  453. editors that count parentheses, and "user friendly"  operat-
  454. ing  systems.  Worst of all, some of these alleged "computer
  455. scientists" manage to get degrees without ever learning FOR-
  456. TRAN!  Are we destined to become an industry of Unix hackers
  457. and PASCAL programmers?
  458.  
  459.      >From my experience, I can only report that the  future
  460. is bright for Real Programmers everywhere. Neither OS370 nor
  461. FORTRAN show any signs of dying out, despite all the efforts
  462. of  PASCAL  programmers  the  world  over.  Even more subtle
  463. tricks, like adding structured coding constructs to  FORTRAN
  464. have  failed.  Oh  sure, some computer vendors have come out
  465. with FORTRAN 77 compilers, but every one of them has  a  way
  466. of  converting itself back into a FORTRAN 66 compiler at the
  467. drop of an option card -- to compile DO loops like God meant
  468. them to be.
  469.  
  470.      Even Unix might not be as bad on Real Programmers as it
  471. once was. The latest release of Unix has the potential of an
  472. operating system worthy of any Real Programmer --  two  dif-
  473. ferent  and  subtly  incompatible user interfaces, an arcane
  474. and complicated teletype  driver,  virtual  memory.  If  you
  475. ignore  the  fact that it's "structured", even C programming
  476. can be  appreciated  by  the  Real  Programmer:  after  all,
  477. there's  no  type  checking,  variable names are seven (ten?
  478. eight?) characters long, and the added bonus of the  Pointer
  479. data  types  is  thrown  in -- like having the best parts of
  480. FORTRAN and assembly language in one place. (Not to  mention
  481. some of the more creative uses for #define.)
  482.  
  483.      No, the future isn't all that bad. Why, in the past few
  484. years,  the  popular  press has even commented on the bright
  485. new crop of computer nerds and hackers ([7] and [8]) leaving
  486. places  like  Stanford  and M.I.T.  for the Real World. From
  487. all evidence, the spirit of Real  Programming  lives  on  in
  488. these  young men and women. As long as there are ill-defined
  489. goals, bizarre bugs, and unrealistic schedules,  there  will
  490. be  Real  Programmers willing to jump in and Solve The Prob-
  491. lem, saving the documentation for later. Long live FORTRAN!
  492.  
  493. ACKNOWLEDGEMENT
  494. ===============
  495.  
  496.      I would like to thank Jan E., Dave S.,  Rich  G.,  Rich
  497. E.,  for  their  help in characterizing the Real Programmer,
  498. Heather B. for the illustration, Kathy  E.  for  putting  up
  499. with it, and atd!avsdS:mark for the initial inspiration.
  500.  
  501. REFERENCES
  502. ==========
  503.  
  504.  [1] Feirstein, B., "Real Men don't Eat Quiche", New
  505.       York, Pocket Books, 1982.
  506.  
  507.  [2] Wirth, N., "Algorithms + Data Structures = Programs",
  508.       Prentice Hall, 1976.
  509.  
  510.  [3] Ilson, R., "Recent Research in Text Processing",
  511.       IEEE Trans. Prof. Commun., Vol. PC-23, No. 4,
  512.       Dec. 4, 1980.
  513.  
  514.  [4] Finseth, C., "Theory and Practice of Text Editors
  515.       -- or -- a Cookbook for an EMACS", B.S. Thesis,
  516.       MITLCSTM-165, Massachusetts Institute of
  517.       Technology, May 1980.
  518.  
  519.  [5] Weinberg, G., "The Psychology of Computer
  520.       Programming", New York, Van Nostrand Reinhold,
  521.       1971, p. 110.
  522.  
  523.  [6] Dijkstra, E., "On the GREEN language submitted to
  524.       the DoD", Sigplan notices, Vol. 3 No. 10, Oct
  525.       1978.
  526.  
  527.  [7] Rose, Frank, "Joy of Hacking", Science 82, Vol. 3
  528.       No. 9, Nov 82, pp. 58-66.
  529.  
  530.  [8] "The Hacker Papers", Psychology Today, August 1980.
  531.  
  532.  [9] sdcarl!lin, "Real Programmers", UUCP-net, Thu Oct
  533.       21 16:55:16 1982
  534.  
  535.